package top.peng.concurrency.example.e_safepublish;

import lombok.extern.slf4j.Slf4j;
import top.peng.concurrency.annoations.NotThreadSafe;

/**
 * 对象发布：对象逸出导致不安全
 */
@Slf4j
@NotThreadSafe
public class Escape {

    private int thisCanBeEscape = 0;

    public Escape() {
        new InnerClass();
    }

    private class InnerClass {
        public InnerClass() {
            // 这里在使用this的时候，Escape()这个构造函数还没有执行结束，就使它被其他线程所见 这里叫对象逸出，时线程不安全的
            log.info("{}", Escape.this.thisCanBeEscape);
        }
    }

    public static void main(String[] args) {
        new Escape();
    }
}
